package com.zhijian.medical.service;

import com.zhijian.medical.entity.po.ExperimentProcessCsv;
import com.zhijian.medical.entity.vo.request.ExperimentProcessCsvSaveOrUpdateVo;
import com.zhijian.medical.entity.vo.request.ExperimentProcessCsvSearchVo;
import com.zhijian.medical.entity.vo.response.ExperimentProcessCsvVo;
import com.zhijian.medical.util.Page;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 实验流程-csv文件导入信息 业务处理层
 *
 * @author HCG
 * @version 1.0
 * @date 2022-04-08 16:03:02
 */
public interface ExperimentProcessCsvService {

    /**
     * 主键查询
     *
     * @param id
     * @return
     */
    ExperimentProcessCsv selectById(Long id);

    /**
     * 主键查询vo
     *
     * @param id
     * @return
     */
    ExperimentProcessCsvVo selectVoById(Long id);

    /**
     * 按照主键删除
     *
     * @param id
     */
    void deleteById(Long id);

    /**
     * 新增
     *
     * @param experimentProcessCsv
     * @return
     */
    Long insert(ExperimentProcessCsv experimentProcessCsv);

    /**
     * 新增一个实验流程的
     *
     * @param experimentProcessCsvSaveOrUpdateVo
     * @return
     */
    boolean insertOrUpdate(ExperimentProcessCsvSaveOrUpdateVo experimentProcessCsvSaveOrUpdateVo);

    /**
     * 更改
     *
     * @param experimentProcessCsv
     * @return
     */
    boolean update(ExperimentProcessCsv experimentProcessCsv);

    /**
     * 总数
     *
     * @param experimentProcessCsvSearchVo
     * @return
     */
    Integer count(ExperimentProcessCsvSearchVo experimentProcessCsvSearchVo);

    /**
     * 列表
     *
     * @param experimentProcessCsvSearchVo
     * @return
     */
    List<ExperimentProcessCsvVo> selectList(ExperimentProcessCsvSearchVo experimentProcessCsvSearchVo);

    /**
     * 分页查询
     *
     * @param experimentProcessCsvSearchVo
     * @return
     */
    Page<ExperimentProcessCsvVo> selectPage(ExperimentProcessCsvSearchVo experimentProcessCsvSearchVo);

    /**
     * 根据实验流程id进行删除
     *
     * @param experimentProcessId
     * @return
     */
    void deleteByExperimentProcessId(Long experimentProcessId);

    /**
     * 导入csv
     *
     * @param experimentProcessId
     * @param file
     * @return
     */
    List<ExperimentProcessCsvVo> importCsv(Long experimentProcessId, MultipartFile file);

    /**
     * 查找一个荧光PCR的数据列表
     *
     * @return
     */
    List<ExperimentProcessCsvVo> selectListByExperimentProcessId(Long experimentProcessId);
}